Network function virtualization is an emerging design approach for constructing Information Technology applications, particularly in the telecommunications industry. The classical approach to network architecture is based upon fragmented, purpose built hardware for implementing network functions—also known as physical network functions (e.g. firewalls, deep packet inspectors, network address translators) which require physical installation at every site at which they are needed. In contrast, network function virtualization aims to consolidate many network equipment types onto, for example, standardised high volume servers, switches, and storage through the implementation of virtual network functions in software which can run on a range of standard hardware. Furthermore, network function virtualization aims to transform network operations because the virtual network functions can be dynamically moved to, or instantiated in, various locations in the network as required without the need for installation of new hardware. Furthermore, multiple physical network functions and virtual network functions can be configured together to form a ‘service-chain’ and packets steered through each network function in the chain in turn.